Код:
var Imported = Imported || {};
Imported.DKR_UsefulPictures = true;
var DKR = DKR || {};
DKR.UsefulPictures = DKR.UsefulPictures || {};
DKR.UsefulPictures.version = 2.0;
//-----------------------------------------------------------------------------
/*:
* @plugindesc (v.2.0.0) Плагин позволяет использовать картинки дополнительнымы способами, а именно: вызывать Общее событие по ховеру, ЛКМ, примитивному "дран-н-дропу".
*
* @target MZ
* @author DarchanKaen
*
* @help
* DKR UsefulPictures
* ----------------------------------------------------------------------------
* ---Общая информация:
* Плагин позволяет использовать картинки дополнительнымы способами,
* а именно - вызывает Общие события при:
* 1. Ховере над картинкой.
* 2. ЛКМ на картинке.
* 3. При перемещении картинки после ЛКМ (реализован примитивный "Драг-н-дроп") на специальную картинку-"дропзону".
* 4. ПКМ (не привязано к картинке).
* 5. Клик колеса мыши ("МКМ"; не привязано к картинке").
* Плагин НЕ СОВМЕСТИМ с другими плагинами на мышь!
* Подробнее - смотри на rpgmaker.su в теме плагинов.
* ---Команды(в эвенте команда "Скрипт"):
* DKR.UsefulPictures.disableLRMC(); - отключает стандартное поведения мыши, НУЖНО ЗАПУСКАТЬ ДЛЯ РАБОТЫ ПЛАГИНА!.
* DKR.UsefulPictures.enableLRMC(); - включает стандартное поведение мыши.
* DKR.UsefulPictures.setCommonEventToRMC(ceId); - задает Общее событие для ПКМ.
* DKR.UsefulPictures.setCommonEventToMMC(ceId); - задает Общее события для МКМ.
* DKR.UsefulPictures.testUsefulPics(); - выводит на консоль перечень настроенных картинок.
* DKR.UsefulPictures.createUsefulPic(picSettings); - создает настроенную картинку с заданными настройками.
* DKR.UsefulPictures.getUsefulPic(usefulPicId); - возвращает настройки картинки с указанным номером.
* DKR.UsefulPictures.updateUsefulPic(usefulPicId, listOfSettingsToUpdate); - обновляет указанные настройки картинки с указанным номером.
* DKR.UsefulPictures.deleteUsefulPic(usefulPicId); - удаляет настройку картинку с указанным номером.
* DKR.UsefulPictures.testDropzone(); - выводит на консоль перечень дропзон.
* DKR.UsefulPictures.createDropZone(dropzoneSettings ); - создает настроенную картинку с заданными настройками.
* DKR.UsefulPictures.getDropZone(dropzoneId); - возвращает дропзону с указанным номером.
* DKR.UsefulPictures.updateDropZone(dropzoneId, listOfSettingsToUpdate); - обновляет указанные настройки дропзоны с указанным номером.
* DKR.UsefulPictures.deleteDropZone(dropzoneId); - удаляет дропзону с указанным номером.
* DKR.UsefulPictures.testVault(); - выводит на консоль список пересечений картинок и дропзон.
* DKR.UsefulPictures.isUsefulPicOnDropzones(usefulPi cId, logicOrIndex); - для получения информации, находится ли указанная картинка хоть на какой-нибудь дропзоне; возвращает true/false или номер дропзоны (-1, при негативном результате).
* DKR.UsefulPictures.isUsefulPicOnConcreteDropzone(u sefulPicId, dropzoneId); - для получения информации, находится ли указанная картинка на конкретной дропзоне; возвращает true/false.
* DKR.UsefulPictures.getUsefulPicsFromDropzone(dropz oneId) - возвращает массив с перечнем настроек картинок, что находятся на указанной дропзоне; может вернуть пустой массив.
где
* ceId - номер Общего события; если 0 или -1, то событие не вызывется.
* picSettings - структура настроек картинки.
* usefulPicId - номер картинки.
* listOfSettingsToUpdate - массив настроек для обновления картинки / дропзоны (['имя настройки', новое значение]).
* dropzoneSettings - структура настроект дрозпоны.
* dropzoneId - номер картинки-дропзоны.
* logicOrIndex - тип запрашиваемого значения; может быть 'logic' или 'index'.
*
* ДЛЯ ПОНИМАНИЯ СТРУКТУРЫ НАСТРОЕК КАРТИНКИ И ДРОПЗОНЫ - ОТКРОЙКТЕ ПЛАГИН БЛОКНОТОМ И НАЙДИТЕ "SETTINGS STRUCTURES".
* ПОДРОБНЕЕ - СМОТРИ ДЕМКУ на rpgmaker.su В ТЕМЕ ПЛАГИНА!
* ----------------------------------------------------------------------------
*
* @param defaultLRMCWorkSwitchId
* @type number
* @desc Номер переключателя, хранящего статус стандартной / нестандартной работы мыши. Не для ручного переключения. (НЕОБХОДИМ!)
* @default 12
*
* @param usefulPicturesListVarId
* @type variable
* @desc Номер переменной для сохранения Списка картинок (НЕБХОДИМ!)
* @default 71
*
* @param dropzonesListVarId
* @type variable
* @desc Номер переменной для сохранения Списка дропзон (НЕБХОДИМ!)
* @default 72
*
* @param vaultListVarId
* @type variable
* @desc Номер переменной для сохранения Списка пересечений картинок и дропзон
* @default 73
*
* @param movableSwitchId
* @type number
* @desc Номер переключателя, позволяющего движение картинок
* @default 13
*
* @param rightMouseClickEventId
* @type number
* @desc Номер Общего события на ПКМ
* @default 34
*
* @param middleMouseClickEventId
* @type number
* @desc Номер Общего события на МКМ (колёсико)
* @default 36
*
* @param lastHoveredPicVarId
* @type variable
* @desc Номер переменной для хранения номера картинки, по которой последний раз был Ховер
* @default 65
*
* @param lastClickedPicVarId
* @type variable
* @desc Номер переменной для хранения номера картинки, по которой последний раз был клик ЛКМ
* @default 66
*
* @param lastMovedPicVarId
* @type variable
* @desc Номер переменной для хранения номера картинки, по которая последний раз перемещалась
* @default 67
*
* @param lastDroppedPicVarId
* @type variable
* @desc Номер переменной для хранения номера картинки, которая последний раз помещалась в дропзону
* @default 68
*
* @param lastUsedDropzoneVarId
* @type variable
* @desc Номер переменной для хранения номера дропзоны, на которую в послдний раз перемещалась картинка
* @default 69
*
*
*/
//UNCOMPABILE WTH PRIMITIVE BUTTON! BUT WORK WITH DEFAULT TEXT BUTTON!
( () => {
//----DATA: BEGIN
//---params
DKR.UsefulPictures.parameters = PluginManager.parameters('DKR_UsefulPictures');
let defaultLRMCWorkSwitchId = Number(DKR.UsefulPictures.parameters["defaultLRMCWorkSwitchId"]);
let usefulPicturesListVarId = Number(DKR.UsefulPictures.parameters["usefulPicturesListVarId"]);
let dropzonesListVarId = Number(DKR.UsefulPictures.parameters["dropzonesListVarId"]);
let vaultListVarId = Number(DKR.UsefulPictures.parameters["vaultListVarId"]);
let rightMouseClickEventId = Number(DKR.UsefulPictures.parameters["rightMouseClickEventId"]);
let middleMouseClickEventId = Number(DKR.UsefulPictures.parameters["middleMouseClickEventId"]);
let movableSwitchId = Number(DKR.UsefulPictures.parameters["movableSwitchId"]);
let lastHoveredPicVarId = Number(DKR.UsefulPictures.parameters["lastHoveredPicVarId"]);
let lastClickedPicVarId = Number(DKR.UsefulPictures.parameters["lastClickedPicVarId "]);
let lastMovedPicVarId = Number(DKR.UsefulPictures.parameters["lastMovedPicVarId"]);
let lastDroppedPicVarId = Number(DKR.UsefulPictures.parameters["lastDroppedPicVarId"]);
let lastUsedDropzoneVarId = Number(DKR.UsefulPictures.parameters["lastUsedDropzoneVarId"]);
//--inner data
let pictureToMoveId = -1;
let pictureToMoveSpeed = -1;
let touchedDropzoneId = -1;
const picToMoveOrigin = 0;
const picToMoveScaleX = 100;
const picToMoveScaleY = 100;
const picToMoveOpacity = 255;
const picToMoveBlendMode = 0;
const DROPZONE_TYPE_LOCK_CODEWORD = 'lock';
const DROPZONE_STATE_SLEEP_CODEWORD = 'sleep';
const DROPZONE_AFTER_OFF_CODEWORD = 'off';
const GET_PIC_ON_DROPZONE_LOGIC_CODEWORD = 'logic';
const GET_PIC_ON_DROPZONE_INDEX_CODEWORD = 'index';
/*
//---- SETTINGS STRUCTURES
//--USEFUL PICS
//-CREATE USEFUL PIC:
let picSettings = {
id: 1,
mark: '',
isHoverable: true,
onHoverCommonEventId: 32,
isClickableLeft: true,
onLeftClickCommonEventId: 33,
isMovable: true,
moveSpeed: 60,
onDropzoneCommonEventId: 37
}
createUsefulPicture(picSettings);
//-UPDATE USEFUL PIC:
updateUsefulPicture(1, [[mark: 'aasd'], [isHoverable: false]])
//-DELETE USEFUL PIC
deleteUsefulPicture(1);
//--DROPZONES
//-CREATE DROPZONE
let dropzoneSettings = {
id: 1,
mark: '',
dropState: 'active', 'sleep'
dropType: 'free', 'lock' //LOCK
dropAfter: 'work', 'off'
onDropCommonEventId: 35
}
createDropzone(dropzoneSettings);
//-UPDATE DROPZONE:
updateDropzone(1, [[mark: 'aasd'], [dropMode: part]])
//-DELETE DROPZONE
deleteDropzone(1);
//--DEMO INGAME TEST
45 = red dropzone
34 = yellow drpzone
21 = black pic
11 = blue picture
1 = green pic
*/
//----DATA: END
//----PLUGIN LOGIC: BEGIN
//---USEFUL PICTURES (HOVER AND CLICK)
//--create
const createUsefulPicture = (usefulPicSettings) => {
let usefulPicsList = $gameVariables.value(usefulPicturesListVarId) || [];
if(-1 === usefulPicsList.indexOf(usefulPicSettings)){
usefulPicsList.push(usefulPicSettings);
$gameVariables.setValue(usefulPicturesListVarId, usefulPicsList);
}
}
//--update
const updateUsefulPicture = (usefulPicId, listOfSettingsToUpdate) => {
let usefulPic = getUsefulPicture(usefulPicId);
if(null === usefulPic || undefined === usefulPic){
console.log('DKR.UsefulPictures_ERROR: USEFUL PIC ARE NOT EXIST! Id:', usefulPicId);
return;
}else{
for(let n = 0; n < listOfSettingsToUpdate.length; n++){
let currSettingName = listOfSettingsToUpdate[n][0];
let currSettingValue = listOfSettingsToUpdate[n][1];
if( false === usefulPic.hasOwnProperty ){
console.log('DKR.UsefulPictures_ERROR: SETTINGS ARE NOT EXIST!');
}else{
usefulPic[currSettingName] = currSettingValue;
}
}
let index = getUsefulPictureIndexIn(usefulPicId);
let usefulPicsList = $gameVariables.value(usefulPicturesListVarId) || [];
usefulPicsList[index] = usefulPic;
$gameVariables.setValue(usefulPicturesListVarId, usefulPicsList);
}
}
//--get
const getUsefulPicture = (usefulPicId) => {
let usefulPic = null;
let usefulPicsList = $gameVariables.value(usefulPicturesListVarId) || [];
usefulPic = usefulPicsList.filter(pic => pic.id === usefulPicId)[0];
return usefulPic;
}
//--delete
const deleteUsefulPicture = (usefulPicId) => {
let index = getUsefulPictureIndexIn(usefulPicId);
let usefulPicsList = $gameVariables.value(usefulPicturesListVarId) || [];
delete usefulPicsList[index];
usefulPicsList = usefulPicsList.filter(pic => pic === pic);
$gameVariables.setValue(usefulPicturesListVarId, usefulPicsList);
deleteUsefulPicOrDropzoneFromVault(usefulPicId, true);
}
//--get index in
const getUsefulPictureIndexIn = (usefulPicId) => {
let innerIndex = -1;
let usefulPicsList = $gameVariables.value(usefulPicturesListVarId) || [];
for(let n = 0; n < usefulPicsList.length; n++){
if(usefulPicId === usefulPicsList[n].id){
innerIndex = n;
}
}
return innerIndex;
}
//---
//---DROPZONES (USEFUL PICTURES DETECTORS)
//-create
const createDropzone = (dropzoneSettings) => {
let dropzonesList = $gameVariables.value(dropzonesListVarId) || [];
if(-1 === dropzonesList.indexOf(dropzoneSettings)){
dropzonesList.push(dropzoneSettings);
$gameVariables.setValue(dropzonesListVarId, dropzonesList);
}
}
//--update
const updateDropzone = (dropzoneId, listOfSettingsToUpdate) => {
let dropzone = getDropzone(dropzoneId);
if(null === dropzone || undefined === dropzone){
console.log('DKR.UsefulPictures_ERROR: DROPZONE ARE NOT EXIST!');
return;
}else{
for(let n = 0; n < listOfSettingsToUpdate.length; n++){
let currSettingName = listOfSettingsToUpdate[n][0];
let currSettingValue = listOfSettingsToUpdate[n][1];
if( false === dropzone.hasOwnProperty ){
console.log('DKR.UsefulPictures_ERROR: SETTINGS ARE NOT EXIST!');
}else{
dropzone[currSettingName] = currSettingValue;
}
}
let dropzonesList = $gameVariables.value(dropzonesListVarId) || [];
let index = getDropzoneIndexIn(dropzoneId);
dropzonesList[index] = dropzone;
$gameVariables.setValue(dropzonesListVarId, dropzonesList);
}
}
//--get
const getDropzone = (dropzoneId) => {
let dropzone = null;
let dropzonesList = $gameVariables.value(dropzonesListVarId) || [];
dropzone = dropzonesList.filter(dropzone => dropzone.id === dropzoneId)[0];
return dropzone;
}
//--delete
const deleteDropzone = (dropzoneId) => {
let index = getDropzoneIndexIn(dropzoneId);
let dropzonesList = $gameVariables.value(dropzonesListVarId) || [];
delete dropzonesList[index];
dropzonesList = dropzonesList.filter(dropzone => dropzone === dropzone);
$gameVariables.setValue(dropzonesListVarId, dropzonesList);
deleteUsefulPicOrDropzoneFromVault(dropzoneId, false);
}
//--is contain usefulPic in dropzone
const isUsefulPicInDropzones = (gamePictureCoordsList) => {
let matchedDropzone = null;
let xCoord = gamePictureCoordsList[0];
let yCoord = gamePictureCoordsList[1];
let gamePicturesList = $gameScreen._pictures;
for(let n = 1; n < gamePicturesList.length; n++){ //pictures start with 1!!!
if(-1 !== getDropzone(n) ){
let currentDropzone = getDropzone(n);
if(null !== currentDropzone && undefined !== currentDropzone){
let dropzonePicWidthAndHeight = getPictureWidthAndHeight(n);
let dropzoneBeginX = gamePicturesList[n]._x;
let dropzoneBeginY = gamePicturesList[n]._y;
let dropzoneEndX = dropzoneBeginX + dropzonePicWidthAndHeight[0];
let dropzoneEndY = dropzoneBeginY + dropzonePicWidthAndHeight[1];
let isInDropzone = isDestinationCoordInDropzone(xCoord, yCoord, dropzoneBeginX, dropzoneBeginY, dropzoneEndX, dropzoneEndY);
if(true === isInDropzone){
matchedDropzone = currentDropzone;
}
}
}
}
return matchedDropzone;
}
const isDestinationCoordInDropzone = (clickX, clickY, dropzoneBeginX, dropzoneBeginY, dropzoneEndX, dropzoneEndY) => {
let isInDropZone = false;
if(
( clickX >= dropzoneBeginX && clickX <= dropzoneEndX ) &&
( clickY >= dropzoneBeginY && clickY <= dropzoneEndY )
){
isInDropZone = true;
}
return isInDropZone;
}
//--get index in
const getDropzoneIndexIn = (dropzoneId) => {
let innerIndex = -1;
let dropzonesList = $gameVariables.value(dropzonesListVarId) || [];
for(let n = 0; n < dropzonesList.length; n++){
if(dropzoneId === dropzonesList[n].id){
innerIndex = n;
}
}
return innerIndex;
}
//---
//---VAULT OF USEFUL PICS ON DROPZONES (STORAGE FOR USEFUL PICTURES ON DROPZONES)
//if one in Vault - FOREVER in vault!
//--add
const addUsefulPicOnDropzoneToVault = (usefulPicId, dropzoneId) => {
let vaultObj = null;
let vaultObjIndex = isAlreadyInVault(usefulPicId, dropzoneId);
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
if(-1 === vaultObjIndex){
vaultObj = {usefulPicId, dropzoneId, isOn: true};
usefulPicsOnDropzonesVault.push(vaultObj);
$gameVariables.setValue(vaultListVarId, usefulPicsOnDropzonesVault);
}else{
vaultObj = getVaultObj(usefulPicId, dropzoneId);
vaultObj.isOn = true;
usefulPicsOnDropzonesVault[vaultObjIndex] = vaultObj;
$gameVariables.setValue(vaultListVarId, usefulPicsOnDropzonesVault);
}
}
//--remove (off)
const removeUsefulPicOnDropzoneFromVault = (usefulPicId) => {
let dropzonesList = $gameVariables.value(dropzonesListVarId) || [];
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
let vaultObj = null;
for(let n = 0; n < dropzonesList.length; n++){
let dropzoneId = dropzonesList[n].id;
let vaultObjIndex = isAlreadyInVault(usefulPicId, dropzoneId);
if(-1 === vaultObjIndex){
continue;
}else{
vaultObj = getVaultObj(usefulPicId, dropzoneId);
vaultObj.isOn = false;
usefulPicsOnDropzonesVault[vaultObjIndex] = vaultObj;
$gameVariables.setValue(vaultListVarId, usefulPicsOnDropzonesVault);
}
}
}
//--delete (full delete from vault)
const deleteUsefulPicOrDropzoneFromVault = (someId, isDeleteUsefulPic) => {
let toDelIndexesList = [];
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
let vaultObj = null;
for(let n = 0; n < usefulPicsOnDropzonesVault.length; n++){
vaultObj = usefulPicsOnDropzonesVault[n];
if(true === isDeleteUsefulPic){
if(someId === vaultObj.usefulPicId){
toDelIndexesList.push(n);
}
}else{
if(someId === vaultObj.dropzoneId){
toDelIndexesList.push(n);
}
}
}
for(let m = 0; m < toDelIndexesList.length; m++){
let currToDelIndex = toDelIndexesList[m];
delete usefulPicsOnDropzonesVault[currToDelIndex];
}
usefulPicsOnDropzonesVault = usefulPicsOnDropzonesVault.filter(someVaultObj => someVaultObj === someVaultObj);
$gameVariables.setValue(vaultListVarId, usefulPicsOnDropzonesVault);
}
//--get
const getVaultObj = (usefulPicId, dropzoneId) => {
let vaultObj = null;
let vaultObjIndex = isAlreadyInVault(usefulPicId, dropzoneId);
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
if( -1 !== vaultObjIndex ){
vaultObj = usefulPicsOnDropzonesVault[vaultObjIndex];
}
return vaultObj;
}
//--search
const isAlreadyInVault = (usefulPicId, dropzoneId) => {
let isInVault = -1;
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
for(let n = 0; n < usefulPicsOnDropzonesVault.length; n++){
let currentVaultObj = usefulPicsOnDropzonesVault[n];
if(usefulPicId === currentVaultObj.usefulPicId && dropzoneId === currentVaultObj.dropzoneId){ // && true === currentVaultObj.isOn
isInVault = n;
}
}
return isInVault;
}
//--for outer code (... .isUsefulPicOnDropzones)
const isUsefulPictureOnDropzones = (usefulPicId, resultType) => {
let result = false;
let dropzoneIndex = -1;
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
for(let n = 0; n < usefulPicsOnDropzonesVault.length; n++){
let currentVaultObj = usefulPicsOnDropzonesVault[n];
if(usefulPicId === currentVaultObj.usefulPicId && true === currentVaultObj.isOn){
dropzoneIndex = currentVaultObj.dropzoneId
break;
}
}
if(GET_PIC_ON_DROPZONE_LOGIC_CODEWORD === resultType){
if(-1 === dropzoneIndex){
result = false;
}else{
result = true;
}
}else if(GET_PIC_ON_DROPZONE_INDEX_CODEWORD === resultType){
result = dropzoneIndex;
}else{
console.log('DKR.UsefulPictures_ERROR: RESULT VARIANT ARE NOT EXIST!:', resultType);
}
return result;
}
//--for outer code (... .isUsefulPicOnConcreteDropzone)
const isUsefulPictureOnConcreteDropzone = (usefulPicId, dropzoneId) => {
let result = false;
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
for(let n = 0; n < usefulPicsOnDropzonesVault.length; n++){
let currentVaultObj = usefulPicsOnDropzonesVault[n];
if(usefulPicId === currentVaultObj.usefulPicId && dropzoneId === currentVaultObj.dropzoneId && true === currentVaultObj.isOn){ //
result = true;
break;
}
}
return result;
}
//--for outer code (... .getUsefulPicsOnDropzone)
const getUsefulPicturesFromDropzone = (dropzoneId) => {
let usefulPicsOnDropzoneList = [];
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
let vaultObjectsOnDropzone = [];
for(let n = 0; n < usefulPicsOnDropzonesVault.length; n++){
let currentVaultObj = usefulPicsOnDropzonesVault[n];
if(dropzoneId === currentVaultObj.dropzoneId && true === currentVaultObj.isOn){
vaultObjectsOnDropzone.push(currentVaultObj);
}
}
for(let m = 0; m < vaultObjectsOnDropzone.length; m++){
let currentVaultObj = vaultObjectsOnDropzone[m];
let currentUsefulPicture = getUsefulPicture(currentVaultObj.usefulPicId);
usefulPicsOnDropzoneList.push(currentUsefulPicture );
}
$gameVariables.setValue(vaultListVarId, usefulPicsOnDropzonesVault);
return usefulPicsOnDropzoneList;
}
//---
//---UTILS
const setPictureIdToVariable = (picId, varId) =>{
if(varId > 0){
$gameVariables.setValue(varId, picId);
}
}
//----PLUGIN LOGIC: END
//----MAKER !!! MOUSE !!! LOGIC: BEGIN
//---DISABLE MOUSE STANDARD BEHAVIOUR
const disableMouseStandardBehaviour = () =>{
Game_Temp.prototype.setDestination = function(x, y) {};
Scene_Map.prototype.isMenuCalled = function() {
return Input.isTriggered('menu');
};
//isDefaultLRMCWork = false;
let isDefaultLRMCWork = false;
$gameSwitches.setValue(defaultLRMCWorkSwitchId, isDefaultLRMCWork);
}
//---ENABLE MOUSE STANDARD BEHAVIOUR
const enableMouseStandardBehaviour = () =>{
Game_Temp.prototype.setDestination = function(x, y) {
this._destinationX = x;
this._destinationY = y;
};
Scene_Map.prototype.isMenuCalled = function() {
return Input.isTriggered("menu") || TouchInput.isCancelled();
};
//isDefaultLRMCWork = true;
let isDefaultLRMCWork = true;
$gameSwitches.setValue(defaultLRMCWorkSwitchId, isDefaultLRMCWork);
//--for cancel picture movement
pictureToMoveId = -1;
pictureToMoveSpeed = -1;
touchedDropzoneId = -1;
}
//---ON HOVER
Sprite_Clickable.prototype.onMouseEnter = function() {
try{
let pic = this.picture();
let picId = $gameScreen._pictures.indexOf(pic);
let usefulPictureSettings = getUsefulPicture(picId);
if(null == usefulPictureSettings){
console.log('DKR.UsefulPictures_ERROR: HOVER__USEFUL PICTURE NOT EXIST OR NOT SET!');
}else{
if(true === usefulPictureSettings.isHoverable && usefulPictureSettings.onHoverCommonEventId > 0){
setPictureIdToVariable(picId, lastHoveredPicVarId);
$gameTemp.reserveCommonEvent(usefulPictureSettings .onHoverCommonEventId);
}
}
}catch(exception){
//console.log('DKR.UsefulPictures_ERROR: onMouse-Enter: ERROR');
//console.log(exception);
}
}
//---ON PICTURE CLICK FOR LMC...TO CHOOSE OR CE
Sprite_Clickable.prototype.onClick = function() {
let isDefaultLRMCWork = $gameSwitches.value(defaultLRMCWorkSwitchId);
if(true === isDefaultLRMCWork){
console.log('DKR.UsefulPictures_INFO: isDefaultLRMCWork IS ON, CANT WORK!');
return;
}
try{
let pic = this.picture();
let picId = $gameScreen._pictures.indexOf(pic);
let usefulPictureSettings = getUsefulPicture(picId);
if(null == usefulPictureSettings || undefined == usefulPictureSettings){
console.log('DKR.UsefulPictures_ERROR: LMC__USEFUL PICTURE NOT EXIST OR NOT SET! Id:', picId);
}else{
if(true === usefulPictureSettings.isClickableLeft && usefulPictureSettings.onLeftClickCommonEventId > 0){
setPictureIdToVariable(picId, lastClickedPicVarId);
$gameTemp.reserveCommonEvent(usefulPictureSettings .onLeftClickCommonEventId);
}
if(true === usefulPictureSettings.isMovable){
pictureToMoveId = picId;
pictureToMoveSpeed = usefulPictureSettings.moveSpeed;
}
}
}catch(exception){
console.log('DKR.UsefulPictures_ERROR: onMouse-Click: ERROR_USEFUL_PIC');
console.log(exception);
}
}
//---ON NOT(!) PICTURE CLICK FOR LMC...FOR MOVE PICTURE
const leftMouseClickProcess = (clickEv) => {
let coordX = clickEv.clientX;
let coordY = clickEv.clientY;
if(false === $gameSwitches.value(movableSwitchId)){
console.log('DKR.UsefulPictures_INFO: MOVEMENT DISABLE BY SWITCH!');
return;
}
//--move Main part
if(-1 !== pictureToMoveId){
$gameScreen.movePicture(
pictureToMoveId, picToMoveOrigin, clickEv.clientX, clickEv.clientY,
picToMoveScaleX, picToMoveScaleY, picToMoveOpacity, picToMoveBlendMode, pictureToMoveSpeed
);
setPictureIdToVariable(pictureToMoveId, lastMovedPicVarId);
//--move Dropzone part
let dropzone = isUsefulPicInDropzones([clickEv.clientX, clickEv.clientY]);
let usefulPicture = getUsefulPicture(pictureToMoveId);
removeUsefulPicOnDropzoneFromVault(pictureToMoveId );
if(null !== dropzone && undefined !== dropzone && dropzone.mark === usefulPicture.mark && DROPZONE_STATE_SLEEP_CODEWORD !== dropzone.dropState){
setPictureIdToVariable(pictureToMoveId, lastDroppedPicVarId);
setPictureIdToVariable(dropzone.id, lastUsedDropzoneVarId);
addUsefulPicOnDropzoneToVault(usefulPicture.id, dropzone.id);
if(DROPZONE_TYPE_LOCK_CODEWORD === dropzone.dropType){
updateUsefulPicture(pictureToMoveId, [ ['isMovable', false], ['isClickableLeft', false], ['onLeftClickCommonEventId', 0] ]);
}
if(usefulPicture.onDropzoneCommonEventId > 0){
$gameTemp.reserveCommonEvent(usefulPicture.onDropz oneCommonEventId);
}
if(dropzone.onDropCommonEventId > 0){
$gameTemp.reserveCommonEvent(dropzone.onDropCommon EventId);
}
if(DROPZONE_AFTER_OFF_CODEWORD === dropzone.dropAfter){
updateDropzone(dropzone.id, [['dropState', 'sleep']]);
}
}
//--for clear picture movement
pictureToMoveId = -1;
pictureToMoveSpeed = -1;
touchedDropzoneId = -1;
}
}
//---ON CLICK FOR RMC...CANCEL PICTURE MOVEMENT OR CE
const rightMouseClickProcess = () => {
let isDefaultLRMCWork = $gameSwitches.value(defaultLRMCWorkSwitchId);
if(true === isDefaultLRMCWork){
console.log('DKR.UsefulPictures_INFO: isDefaultLRMCWork IS ON, CANT WORK!');
return;
}
if(rightMouseClickEventId > 0){
$gameTemp.reserveCommonEvent(rightMouseClickEventI d);
}
//--for cancel picture movement
pictureToMoveId = -1;
pictureToMoveSpeed = -1;
touchedDropzoneId = -1;
}
//---ON CLICK ON MMC...CIRCLE...FOR CE
const middleMouseClickProcess = () => {
let isDefaultLRMCWork = $gameSwitches.value(defaultLRMCWorkSwitchId);
if(true === isDefaultLRMCWork){
console.log('DKR.UsefulPictures_INFO: isDefaultLRMCWork IS ON, CANT WORK!');
return;
}
if(middleMouseClickEventId > 0){
$gameTemp.reserveCommonEvent(middleMouseClickEvent Id);
}
}
//---FOR CLICK: DETECT L-R-M CLICKS
TouchInput._onMouseDown = function(event) {
if (event.button === 0) {
this._onLeftButtonDown(event);
leftMouseClickProcess(event);
} else if (event.button === 1) {
this._onMiddleButtonDown(event);
middleMouseClickProcess();
} else if (event.button === 2) {
this._onRightButtonDown(event);
rightMouseClickProcess();
}
};
//---FOR GET PICTURE WIDTH AND HEIGHT
const getPictureWidthAndHeight = (pictureId) => {
let pictureHeightAndWidth = [-1, -1];
try{
let picsSpritesetList = SceneManager._scene._spriteset.children.find(obj => obj.children.length >= 99);
let pictureSprite = picsSpritesetList.children[pictureId - 1];
let pictureWidth = pictureSprite.width;
let pictureHeight = pictureSprite.height;
pictureHeightAndWidth = [pictureWidth, pictureHeight];
}catch(exception){
console.log('DKR.UsefulPictures_ERROR: getPictureWidthAndHeight: ERROR | pic_id:', pictureId);
console.log(exception);
}
return pictureHeightAndWidth;
}
//----MAKER LOGIC: END
//----COMMANDS: BEGIN
//--on/off default left right mouse click
DKR.UsefulPictures.disableLRMC = function(){
disableMouseStandardBehaviour();
}
DKR.UsefulPictures.enableLRMC = function(){
enableMouseStandardBehaviour();
}
//--
//--set Common events to right muse click and middel mouse click
DKR.UsefulPictures.setCommonEventToRMC = function(ceId){
rightMouseClickEventId = ceId;
}
DKR.UsefulPictures.setCommonEventToMMC = function(ceId){
middleMouseClickEventId = ceId;
}
//--
//-create/update/delete useful pictures
DKR.UsefulPictures.testUsefulPics = function(){
let usefulPicsList = $gameVariables.value(usefulPicturesListVarId) || [];
console.log('_usefulPicsList:', usefulPicsOnDropzonesVault);
}
DKR.UsefulPictures.createUsefulPic = function(picSettings){
createUsefulPicture(picSettings);
}
DKR.UsefulPictures.getUsefulPic = function(usefulPicId){
return getUsefulPicture(usefulPicId);
}
DKR.UsefulPictures.updateUsefulPic = function(usefulPicId, listOfSettingsToUpdate){
updateUsefulPicture(usefulPicId, listOfSettingsToUpdate);
}
DKR.UsefulPictures.deleteUsefulPic = function(usefulPicId){
deleteUsefulPicture(usefulPicId);
}
//--
//-create/update/delete dropzones
DKR.UsefulPictures.testDropzones = function(){
let dropzonesList = $gameVariables.value(dropzonesListVarId) || [];
console.log('_dropzonesList:', dropzonesList);
}
DKR.UsefulPictures.createDropZone = function(dropzoneSettings){
createDropzone(dropzoneSettings);
}
DKR.UsefulPictures.getDropZone = function(dropzoneId){
return getDropzone(dropzoneId);
}
DKR.UsefulPictures.updateDropZone = function(dropzoneId, listOfSettingsToUpdate){
updateDropzone(dropzoneId, listOfSettingsToUpdate);
}
DKR.UsefulPictures.deleteDropZone = function(dropzoneId){
deleteDropzone(dropzoneId);
}
//--
//--get informtation about useful pictures on dropzones
DKR.UsefulPictures.testVault = function(){
let usefulPicsOnDropzonesVault = $gameVariables.value(vaultListVarId) || [];
console.log(usefulPicsOnDropzonesVault);
}
DKR.UsefulPictures.isUsefulPicOnDropzones = function(usefulPicId, logicOrIndex){
return isUsefulPictureOnDropzones(usefulPicId, logicOrIndex);
}
DKR.UsefulPictures.isUsefulPicOnConcreteDropzone = function(usefulPicId, dropzoneId){
return isUsefulPictureOnConcreteDropzone(usefulPicId, dropzoneId);
}
DKR.UsefulPictures.getUsefulPicsFromDropzone = function(dropzoneId){
return getUsefulPicturesFromDropzone(dropzoneId);
}
//--
//----COMMANDS: END
} )();
Социальные закладки